#include<bits/stdc++.h>
#define int long long 
using namespace std;

const int N = 5e5 + 5;
const int inf = 1e18;
int arr[N];
int min_r[N]; // 记录从 i 到 n 中这段区间中的最小值
stack<int> s; // 使用单调栈, 能够一下子记录有大小关系的两个值

void solve(){
	int n;
	cin >> n;
	for (int i=1; i<=n;i++) {
		cin >> arr[i];
	}
	min_r[n] = arr[n];
	for (int i=n-1;i>=1;i--) {
		min_r[i] = min(arr[i], min_r[i+1]);
	}
	int a = -inf;
	for (int i=1;i<=n;i++) {
		// arr[i] 表示 c        min_r[i] 表示 d
		if (arr[i] < a && min_r[i] < arr[i]) {
			cout << "YES" << '\n';
			return;
		}
		while (!s.empty() && s.top()<arr[i]) {
			a = max(a, s.top()); // 有 b 比 a 大, 更新 a, a 取最后的最大值
			s.pop();
		}
		s.push(arr[i]);
	}
	cout << "NO" << '\n';
	return;
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t=1;
//	cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}
